﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace Tencent.OA.Banche.App.Proxy
{
    public abstract class ServiceProxyBase
    {
        /// <summary>
        /// 从代理工厂加载指定的服务接口的实例对象。
        /// </summary>
        /// <typeparam name="TService">服务接口的类型。</typeparam>
        /// <returns></returns>
        protected  static TService LoadService<TService>() where TService : class
        {
            return ProxyFactory.GetProxy<TService>();
        }

        ///// <summary>
        ///// 尝试从缓存中加载对象，如果缓存中没有此对象则调用loadFromRepository委托，
        ///// 并将该委托的返回结果加载到缓存中。
        ///// </summary>
        ///// <typeparam name="T">需要从缓存加载对象的类型。</typeparam>
        ///// <param name="cacheKey">从缓存返回对象的Key。</param>
        ///// <param name="loadFromRepository">一个Func&lt;T&gt;。
        ///// 如果不能从缓存加载对象则调用该委托，尝试从数据库中获取对象。</param>
        ///// <returns>一个T的实例对象。</returns>
        //public T LoadCachedData<T>(string cacheKey, Func<T> loadFromRepository)
        //{
        //    var t = (T)CacheManager.GetData(cacheKey);
        //    if (t != null)
        //        return t;

        //    t = loadFromRepository();
        //    CacheManager.Add(cacheKey, t);
        //    return t;
        //}

        ///// <summary>
        ///// 指定缓存Key，将对象加入到缓存中。
        ///// </summary>
        ///// <param name="cacheKey">缓存Key</param>
        ///// <param name="data">需要加入到缓存的对象。</param>
        //public void AddDataToCache(string cacheKey, object data)
        //{
        //    this.CacheManager.Add(cacheKey, data);
        //}

    }
}
